home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / aclocal / glib-gettext.m4 < prev    next >
Text File  |  2006-04-25  |  13KB  |  399 lines

  1. # Copyright (C) 1995-2002 Free Software Foundation, Inc.
  2. # Copyright (C) 2001-2003,2004 Red Hat, Inc.
  3. #
  4. # This file is free software, distributed under the terms of the GNU
  5. # General Public License.  As a special exception to the GNU General
  6. # Public License, this file may be distributed as part of a program
  7. # that contains a configuration script generated by Autoconf, under
  8. # the same distribution terms as the rest of that program.
  9. #
  10. # This file can be copied and used freely without restrictions.  It can
  11. # be used in projects which are not available under the GNU Public License
  12. # but which still want to provide support for the GNU gettext functionality.
  13. #
  14. # Macro to add for using GNU gettext.
  15. # Ulrich Drepper <drepper@cygnus.com>, 1995, 1996
  16. #
  17. # Modified to never use included libintl. 
  18. # Owen Taylor <otaylor@redhat.com>, 12/15/1998
  19. #
  20. # Major rework to remove unused code
  21. # Owen Taylor <otaylor@redhat.com>, 12/11/2002
  22. #
  23. # Added better handling of ALL_LINGUAS from GNU gettext version 
  24. # written by Bruno Haible, Owen Taylor <otaylor.redhat.com> 5/30/3002
  25. #
  26. # Modified to require ngettext
  27. # Matthias Clasen <mclasen@redhat.com> 08/06/2004
  28. #
  29. # We need this here as well, since someone might use autoconf-2.5x
  30. # to configure GLib then an older version to configure a package
  31. # using AM_GLIB_GNU_GETTEXT
  32. AC_PREREQ(2.53)
  33.  
  34. dnl
  35. dnl We go to great lengths to make sure that aclocal won't 
  36. dnl try to pull in the installed version of these macros
  37. dnl when running aclocal in the glib directory.
  38. dnl
  39. m4_copy([AC_DEFUN],[glib_DEFUN])
  40. m4_copy([AC_REQUIRE],[glib_REQUIRE])
  41. dnl
  42. dnl At the end, if we're not within glib, we'll define the public
  43. dnl definitions in terms of our private definitions.
  44. dnl
  45.  
  46. # GLIB_LC_MESSAGES
  47. #--------------------
  48. glib_DEFUN([GLIB_LC_MESSAGES],
  49.   [AC_CHECK_HEADERS([locale.h])
  50.     if test $ac_cv_header_locale_h = yes; then
  51.     AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
  52.       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
  53.        am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
  54.     if test $am_cv_val_LC_MESSAGES = yes; then
  55.       AC_DEFINE(HAVE_LC_MESSAGES, 1,
  56.         [Define if your <locale.h> file defines LC_MESSAGES.])
  57.     fi
  58.   fi])
  59.  
  60. # GLIB_PATH_PROG_WITH_TEST
  61. #----------------------------
  62. dnl GLIB_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
  63. dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
  64. glib_DEFUN([GLIB_PATH_PROG_WITH_TEST],
  65. [# Extract the first word of "$2", so it can be a program name with args.
  66. set dummy $2; ac_word=[$]2
  67. AC_MSG_CHECKING([for $ac_word])
  68. AC_CACHE_VAL(ac_cv_path_$1,
  69. [case "[$]$1" in
  70.   /*)
  71.   ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
  72.   ;;
  73.   *)
  74.   IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
  75.   for ac_dir in ifelse([$5], , $PATH, [$5]); do
  76.     test -z "$ac_dir" && ac_dir=.
  77.     if test -f $ac_dir/$ac_word; then
  78.       if [$3]; then
  79.     ac_cv_path_$1="$ac_dir/$ac_word"
  80.     break
  81.       fi
  82.     fi
  83.   done
  84.   IFS="$ac_save_ifs"
  85. dnl If no 4th arg is given, leave the cache variable unset,
  86. dnl so AC_PATH_PROGS will keep looking.
  87. ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
  88. ])dnl
  89.   ;;
  90. esac])dnl
  91. $1="$ac_cv_path_$1"
  92. if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
  93.   AC_MSG_RESULT([$]$1)
  94. else
  95.   AC_MSG_RESULT(no)
  96. fi
  97. AC_SUBST($1)dnl
  98. ])
  99.  
  100. # GLIB_WITH_NLS
  101. #-----------------
  102. glib_DEFUN([GLIB_WITH_NLS],
  103.   dnl NLS is obligatory
  104.   [USE_NLS=yes
  105.     AC_SUBST(USE_NLS)
  106.  
  107.     gt_cv_have_gettext=no
  108.  
  109.     CATOBJEXT=NONE
  110.     XGETTEXT=:
  111.     INTLLIBS=
  112.  
  113.     AC_CHECK_HEADER(libintl.h,
  114.      [gt_cv_func_dgettext_libintl="no"
  115.       libintl_extra_libs=""
  116.  
  117.       #
  118.       # First check in libc
  119.       #
  120.       AC_CACHE_CHECK([for ngettext in libc], gt_cv_func_ngettext_libc,
  121.         [AC_TRY_LINK([
  122. #include <libintl.h>
  123. ],
  124.          [return !ngettext ("","", 1)],
  125.       gt_cv_func_ngettext_libc=yes,
  126.           gt_cv_func_ngettext_libc=no)
  127.         ])
  128.   
  129.       if test "$gt_cv_func_ngettext_libc" = "yes" ; then
  130.           AC_CACHE_CHECK([for dgettext in libc], gt_cv_func_dgettext_libc,
  131.             [AC_TRY_LINK([
  132. #include <libintl.h>
  133. ],
  134.               [return !dgettext ("","")],
  135.           gt_cv_func_dgettext_libc=yes,
  136.               gt_cv_func_dgettext_libc=no)
  137.             ])
  138.       fi
  139.   
  140.       if test "$gt_cv_func_ngettext_libc" = "yes" ; then
  141.         AC_CHECK_FUNCS(bind_textdomain_codeset)
  142.       fi
  143.  
  144.       #
  145.       # If we don't have everything we want, check in libintl
  146.       #
  147.       if test "$gt_cv_func_dgettext_libc" != "yes" \
  148.      || test "$gt_cv_func_ngettext_libc" != "yes" \
  149.          || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then
  150.         
  151.         AC_CHECK_LIB(intl, bindtextdomain,
  152.         [AC_CHECK_LIB(intl, ngettext,
  153.             [AC_CHECK_LIB(intl, dgettext,
  154.                       gt_cv_func_dgettext_libintl=yes)])])
  155.  
  156.     if test "$gt_cv_func_dgettext_libintl" != "yes" ; then
  157.       AC_MSG_CHECKING([if -liconv is needed to use gettext])
  158.       AC_MSG_RESULT([])
  159.         AC_CHECK_LIB(intl, ngettext,
  160.               [AC_CHECK_LIB(intl, dcgettext,
  161.                [gt_cv_func_dgettext_libintl=yes
  162.             libintl_extra_libs=-liconv],
  163.             :,-liconv)],
  164.         :,-liconv)
  165.         fi
  166.  
  167.         #
  168.         # If we found libintl, then check in it for bind_textdomain_codeset();
  169.         # we'll prefer libc if neither have bind_textdomain_codeset(),
  170.         # and both have dgettext and ngettext
  171.         #
  172.         if test "$gt_cv_func_dgettext_libintl" = "yes" ; then
  173.           glib_save_LIBS="$LIBS"
  174.           LIBS="$LIBS -lintl $libintl_extra_libs"
  175.           unset ac_cv_func_bind_textdomain_codeset
  176.           AC_CHECK_FUNCS(bind_textdomain_codeset)
  177.           LIBS="$glib_save_LIBS"
  178.  
  179.           if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then
  180.             gt_cv_func_dgettext_libc=no
  181.           else
  182.             if test "$gt_cv_func_dgettext_libc" = "yes" \
  183.         && test "$gt_cv_func_ngettext_libc" = "yes"; then
  184.               gt_cv_func_dgettext_libintl=no
  185.             fi
  186.           fi
  187.         fi
  188.       fi
  189.  
  190.       if test "$gt_cv_func_dgettext_libc" = "yes" \
  191.     || test "$gt_cv_func_dgettext_libintl" = "yes"; then
  192.         gt_cv_have_gettext=yes
  193.       fi
  194.   
  195.       if test "$gt_cv_func_dgettext_libintl" = "yes"; then
  196.         INTLLIBS="-lintl $libintl_extra_libs"
  197.       fi
  198.   
  199.       if test "$gt_cv_have_gettext" = "yes"; then
  200.     AC_DEFINE(HAVE_GETTEXT,1,
  201.       [Define if the GNU gettext() function is already present or preinstalled.])
  202.     GLIB_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
  203.       [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
  204.     if test "$MSGFMT" != "no"; then
  205.           glib_save_LIBS="$LIBS"
  206.           LIBS="$LIBS $INTLLIBS"
  207.       AC_CHECK_FUNCS(dcgettext)
  208.       AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
  209.       GLIB_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
  210.         [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
  211.       AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
  212.              return _nl_msg_cat_cntr],
  213.         [CATOBJEXT=.gmo 
  214.              DATADIRNAME=share],
  215.         [case $host in
  216.         *-*-solaris*)
  217.         dnl On Solaris, if bind_textdomain_codeset is in libc,
  218.         dnl GNU format message catalog is always supported,
  219.             dnl since both are added to the libc all together.
  220.         dnl Hence, we'd like to go with DATADIRNAME=share and
  221.         dnl and CATOBJEXT=.gmo in this case.
  222.             AC_CHECK_FUNC(bind_textdomain_codeset,
  223.           [CATOBJEXT=.gmo 
  224.                DATADIRNAME=share],
  225.           [CATOBJEXT=.mo
  226.                DATADIRNAME=lib])
  227.         ;;
  228.         *)
  229.         CATOBJEXT=.mo
  230.             DATADIRNAME=lib
  231.         ;;
  232.         esac])
  233.           LIBS="$glib_save_LIBS"
  234.       INSTOBJEXT=.mo
  235.     else
  236.       gt_cv_have_gettext=no
  237.     fi
  238.       fi
  239.     ])
  240.  
  241.     if test "$gt_cv_have_gettext" = "yes" ; then
  242.       AC_DEFINE(ENABLE_NLS, 1,
  243.         [always defined to indicate that i18n is enabled])
  244.     fi
  245.  
  246.     dnl Test whether we really found GNU xgettext.
  247.     if test "$XGETTEXT" != ":"; then
  248.       dnl If it is not GNU xgettext we define it as : so that the
  249.       dnl Makefiles still can work.
  250.       if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
  251.         : ;
  252.       else
  253.         AC_MSG_RESULT(
  254.       [found xgettext program is not GNU xgettext; ignore it])
  255.         XGETTEXT=":"
  256.       fi
  257.     fi
  258.  
  259.     # We need to process the po/ directory.
  260.     POSUB=po
  261.  
  262.     AC_OUTPUT_COMMANDS(
  263.       [case "$CONFIG_FILES" in *po/Makefile.in*)
  264.         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
  265.       esac])
  266.  
  267.     dnl These rules are solely for the distribution goal.  While doing this
  268.     dnl we only have to keep exactly one list of the available catalogs
  269.     dnl in configure.in.
  270.     for lang in $ALL_LINGUAS; do
  271.       GMOFILES="$GMOFILES $lang.gmo"
  272.       POFILES="$POFILES $lang.po"
  273.     done
  274.  
  275.     dnl Make all variables we use known to autoconf.
  276.     AC_SUBST(CATALOGS)
  277.     AC_SUBST(CATOBJEXT)
  278.     AC_SUBST(DATADIRNAME)
  279.     AC_SUBST(GMOFILES)
  280.     AC_SUBST(INSTOBJEXT)
  281.     AC_SUBST(INTLLIBS)
  282.     AC_SUBST(PO_IN_DATADIR_TRUE)
  283.     AC_SUBST(PO_IN_DATADIR_FALSE)
  284.     AC_SUBST(POFILES)
  285.     AC_SUBST(POSUB)
  286.   ])
  287.  
  288. # AM_GLIB_GNU_GETTEXT
  289. # -------------------
  290. # Do checks necessary for use of gettext. If a suitable implementation 
  291. # of gettext is found in either in libintl or in the C library,
  292. # it will set INTLLIBS to the libraries needed for use of gettext
  293. # and AC_DEFINE() HAVE_GETTEXT and ENABLE_NLS. (The shell variable
  294. # gt_cv_have_gettext will be set to "yes".) It will also call AC_SUBST()
  295. # on various variables needed by the Makefile.in.in installed by 
  296. # glib-gettextize.
  297. dnl
  298. glib_DEFUN([GLIB_GNU_GETTEXT],
  299.   [AC_REQUIRE([AC_PROG_CC])dnl
  300.    AC_REQUIRE([AC_HEADER_STDC])dnl
  301.    
  302.    GLIB_LC_MESSAGES
  303.    GLIB_WITH_NLS
  304.  
  305.    if test "$gt_cv_have_gettext" = "yes"; then
  306.      if test "x$ALL_LINGUAS" = "x"; then
  307.        LINGUAS=
  308.      else
  309.        AC_MSG_CHECKING(for catalogs to be installed)
  310.        NEW_LINGUAS=
  311.        for presentlang in $ALL_LINGUAS; do
  312.          useit=no
  313.          if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then
  314.            desiredlanguages="$LINGUAS"
  315.          else
  316.            desiredlanguages="$ALL_LINGUAS"
  317.          fi
  318.          for desiredlang in $desiredlanguages; do
  319.         # Use the presentlang catalog if desiredlang is
  320.            #   a. equal to presentlang, or
  321.            #   b. a variant of presentlang (because in this case,
  322.            #      presentlang can be used as a fallback for messages
  323.            #      which are not translated in the desiredlang catalog).
  324.            case "$desiredlang" in
  325.              "$presentlang"*) useit=yes;;
  326.            esac
  327.          done
  328.          if test $useit = yes; then
  329.            NEW_LINGUAS="$NEW_LINGUAS $presentlang"
  330.          fi
  331.        done
  332.        LINGUAS=$NEW_LINGUAS
  333.        AC_MSG_RESULT($LINGUAS)
  334.      fi
  335.  
  336.      dnl Construct list of names of catalog files to be constructed.
  337.      if test -n "$LINGUAS"; then
  338.        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
  339.      fi
  340.    fi
  341.  
  342.    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
  343.    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
  344.    dnl Try to locate is.
  345.    MKINSTALLDIRS=
  346.    if test -n "$ac_aux_dir"; then
  347.      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
  348.    fi
  349.    if test -z "$MKINSTALLDIRS"; then
  350.      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
  351.    fi
  352.    AC_SUBST(MKINSTALLDIRS)
  353.  
  354.    dnl Generate list of files to be processed by xgettext which will
  355.    dnl be included in po/Makefile.
  356.    test -d po || mkdir po
  357.    if test "x$srcdir" != "x."; then
  358.      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
  359.        posrcprefix="$srcdir/"
  360.      else
  361.        posrcprefix="../$srcdir/"
  362.      fi
  363.    else
  364.      posrcprefix="../"
  365.    fi
  366.    rm -f po/POTFILES
  367.    sed -e "/^#/d" -e "/^\$/d" -e "s,.*,    $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
  368.     < $srcdir/po/POTFILES.in > po/POTFILES
  369.   ])
  370.  
  371. # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE)
  372. # -------------------------------
  373. # Define VARIABLE to the location where catalog files will
  374. # be installed by po/Makefile.
  375. glib_DEFUN([GLIB_DEFINE_LOCALEDIR],
  376. [glib_REQUIRE([GLIB_GNU_GETTEXT])dnl
  377. glib_save_prefix="$prefix"
  378. glib_save_exec_prefix="$exec_prefix"
  379. test "x$prefix" = xNONE && prefix=$ac_default_prefix
  380. test "x$exec_prefix" = xNONE && exec_prefix=$prefix
  381. if test "x$CATOBJEXT" = "x.mo" ; then
  382.   localedir=`eval echo "${libdir}/locale"`
  383. else
  384.   localedir=`eval echo "${datadir}/locale"`
  385. fi
  386. prefix="$glib_save_prefix"
  387. exec_prefix="$glib_save_exec_prefix"
  388. AC_DEFINE_UNQUOTED($1, "$localedir",
  389.   [Define the location where the catalogs will be installed])
  390. ])
  391.  
  392. dnl
  393. dnl Now the definitions that aclocal will find
  394. dnl
  395. ifdef(glib_configure_in,[],[
  396. AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
  397. AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
  398. ])dnl
  399.